package view
{
	import flash.events.Event;
	
	import model.HttpProxy;
	
	import myApps.SimpleFacade;
	
	import org.puremvc.as3.interfaces.INotification;
	import org.puremvc.as3.patterns.mediator.Mediator;

	/**
	 * 用于管理主Application的逻辑类,用于建立和PureMVC的关联.封装Component成为
	 * PureMVC的一部分,常用用于处理PureMVC的内部Notification通信,而不使用Flex本身
	 * 的事件模型
	 * 
	 */
	public class SimpleMediator extends Mediator
	{
		public static const NAME:String="simpleMediator";
		/**
		 * 重写的构造函数,方便的进行注册
		 * 同时会在构造函数里面初始化主Application所需要展示的Components所对应的Mediator
		 * */
		public function SimpleMediator(viewComponent:SimpleSSHF)
		{
			super(NAME, viewComponent);
			app.addEventListener(SimpleSSHF.TRY_CONN,connHandler)
		}
		
		/**
		 * 重写父类的方法,用于记录所关注的Notification通知
		 * */
		override public function listNotificationInterests():Array
		{
			return [HttpProxy.CONNSUCCESS,HttpProxy.CONNFAULT];
		}
		/**
		 * 在触发ListNotIficationInterests方法中的Notification时候进行调用
		 * 在方法内部用Switch判断Notification的类型
		 * */
		override public function handleNotification(note:INotification):void
		{
			switch(note.getName()){
				case HttpProxy.CONNSUCCESS:
				trace("连接成功")
				trace(note.getBody());
				break;
				case HttpProxy.CONNFAULT:
				trace("连接失败")
				trace(note.getBody())
				break;
			}
		}
		
		/**
		 * 隐性的getter封装了类型转换
		 * */
		 private function get app():SimpleSSHF
		 {
		 	return viewComponent as SimpleSSHF;
		 }
		 
		 /**
		 * 监听Components中发出的连接事件
		 * */
		 private function connHandler(e:Event):void
		 {
		 	trace("触发在SimpleMediator");
		 	sendNotification(SimpleFacade.CONN,app.httpUrl.text);
		 }
		
	}
}